// pages/login/login.js
const app = getApp();

Page({
  data: {
    isLogin: true, // true: 登录模式, false: 注册模式
    account: '', // 账号
    password: '', // 密码
    confirmPassword: '', // 确认密码（注册用）
    stdId: '', // 学号（注册用）
    avatarUrl: '' // 头像临时路径
  },

  // 切换登录/注册模式
  switchMode() {
    this.setData({
      isLogin: !this.data.isLogin,
      account: '',
      password: '',
      confirmPassword: '',
      stdId: '',
      avatarUrl: ''
    });
  },

  // 输入框事件处理
  handleAccountInput(e) { this.setData({ account: e.detail.value.trim() }); },
  handlePasswordInput(e) { this.setData({ password: e.detail.value.trim() }); },
  handleConfirmPasswordInput(e) { this.setData({ confirmPassword: e.detail.value.trim() }); },
  handleStdIdInput(e) { this.setData({ stdId: e.detail.value.trim() }); },

  // 选择头像
  chooseAvatar() {
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        this.setData({ avatarUrl: res.tempFilePaths[0] });
      }
    });
  },

  // 登录处理
  async handleLogin() {
    const { account, password } = this.data;
    if (!account || !password) {
      wx.showToast({ title: '账号和密码不能为空', icon: 'none' });
      return;
    }

    try {
      // 调用云函数登录
      const { result } = await wx.cloud.callFunction({
        name: 'login',
        data: { account, password }
      });

      if (result.code === 0) {
        // 登录成功，保存用户信息到全局变量
        app.globalData.stdId = result.data.stdId;
        app.globalData.userInfo = result.data;
        // console.log(app.globalData.stdId)
        // console.log(app.globalData.userInfo)
        wx.showToast({
          title: '登录成功',
          icon: 'success',
          duration: 1500,
          success: () => {
            setTimeout(() => {
              wx.switchTab({ url:'/pages/index/index'}); // 跳转首页
            }, 1500);
          }
        });
       
      } else if (result.code === 1) {
        // 账号未注册，跳转注册页并填充账号
        this.setData({ isLogin: false, account });
        wx.showToast({ title: '账号未注册，请先注册', icon: 'none' });
      } else {
        wx.showToast({ title: result.message || '登录失败，请重试', icon: 'none' });
      }
    } catch (error) {
      console.error('登录异常:', error);
      wx.showToast({ title: '网络异常，请重试', icon: 'none' });
    }
  },

  // 注册处理
  async handleRegister() {
    const { account, password, confirmPassword, stdId, avatarUrl } = this.data;
    if (!account || !password || !confirmPassword || !stdId) {
      wx.showToast({ title: '请填写完整信息', icon: 'none' });
      return;
    }
    if (password.length < 6 || password.length > 16) {
      wx.showToast({ title: '密码长度需为6-16位', icon: 'none' });
      return;
    }
    if (password !== confirmPassword) {
      wx.showToast({ title: '两次输入的密码不一致', icon: 'none' });
      return;
    }
    if (!stdId) {
      wx.showToast({ title: '请输入学号', icon: 'none' });
      return;
    }

    try {
      // 上传头像到云存储
      let avatarFileID = '';
      if (avatarUrl) {
        const uploadRes = await wx.cloud.uploadFile({
          cloudPath: `avatars/${Date.now()}-${Math.random().toString(36).substr(2)}.png`,
          filePath: avatarUrl
        });
        avatarFileID = uploadRes.fileID;
      }

      // 调用云函数注册
      const { result } = await wx.cloud.callFunction({
        name: 'register',
        data: {
          account,
          password, // 实际项目中应存储加密后的密码
          stdId,
          avatarFileID
        }
      });

      if (result.code === 0) {
        wx.showToast({
          title: '注册成功',
          icon: 'success',
          duration: 1500,
          success: () => {
            setTimeout(() => {
              this.switchMode(); // 切换回登录模式
            }, 1500);
          }
        });
      } else {
        wx.showToast({ title: result.message || '注册失败，请重试', icon: 'none' });
      }
    } catch (error) {
      console.error('注册异常:', error);
      wx.showToast({ title: '网络异常，请重试', icon: 'none' });
    }
  }
});